常用套件整理 - Visual Studio
TLDR
- 擴充套件建議以「獨立安裝」取代「同捆包」,避免功能重疊、過時或移除不乾淨的問題。
- 編輯器字型建議使用
Cascadia Mono,在高解析度螢幕下閱讀體驗更佳。 - 針對 ASP.NET Core 專案,推薦使用
Serilog進行結構化日誌紀錄,並搭配Seq進行視覺化分析。 - 依賴注入 (DI) 建議搭配
Scrutor補足原生 DI 缺乏組件掃描 (Assembly Scanning) 的功能。 - 反向代理首選
YARP,因其與 .NET 高度整合且效能優異。 - 壓縮檔案時,若有資安要求(避免暫存檔殘留),應優先使用
System.IO.Compression或原生套件,而非呼叫外部7z.exe。 - 商業環境使用 Excel 套件時,請注意
EPPlus的授權限制,必要時改用NPOI。
Visual Studio 擴充套件建議
在管理 Visual Studio 擴充套件時,建議改為維護獨立清單,而非安裝大型同捆包。
為什麼不建議安裝同捆包
什麼情況下會遇到這個問題:當開發者習慣直接安裝「Productivity Power Tools」或「Web Essentials」等大型同捆包時。
- 內容不透明:安裝同捆包往往不清楚具體包含了哪些工具,且內容常隨版本變動。
- 功能重疊與過時:隨著 Visual Studio 更新,許多舊功能已無法使用,或已被 VS 內建功能取代。
- 移除不乾淨:移除同捆包時,通常不會連帶移除當初安裝的子套件,導致環境殘留不再需要的工具。
推薦擴充套件清單
- Productivity Power Tools 相關:
Double-Click Maximize 2022:點擊兩下最大化視窗。Fix Mixed Tabs:偵測並轉換 Tabs 與空格。Middle Click Scroll:使用滑鼠滾輪移動文件。Solution Error Visualizer:在 Solution Explorer 顯示錯誤提示。
- Dev Essentials 相關:
File Icons:美化檔案圖示。SVG Viewer:SVG 預覽與最佳化。Editor Enhancements:強化程式碼排序、文字編碼等功能。Markdown Editor v2:編輯器內建 Markdown 支援。Image Optimizer:圖片壓縮。
- 其他實用工具:
ResXManager:多國語言開發必備,提供 Excel 表格式管理.resx檔。Editor Guidelines:提供程式碼長度補助線(建議設定 80, 100, 120 字元)。VSColorOutput:讓 Output 視窗的 Build 訊息具備顏色區分。
Visual Studio 環境設定優化
字型與顯示設定
什麼情況下會遇到這個問題:在高解析度螢幕下,舊有字型(如 Consolas)閱讀體驗不佳,或出現滑鼠指標亂跑的情況。
- 字型選擇:推薦使用
Cascadia Mono。它專為程式碼設計,閱讀體驗優於 Consolas。 - Cascadia Code vs. Mono:建議選擇
Cascadia Mono。因Cascadia Code支援連字(如!=變為≠),容易造成符號判斷混淆,選擇不支援連字的 Mono 版本較為安全。 - 螢幕顯示:若操作 SQL 檔時發生滑鼠指標異常,可嘗試關閉「為不同像素密度的螢幕最佳化呈現方式」。
編輯器與語言設定
- 文件索引標籤:建議將位置設為「左」或「右」以增加垂直閱讀空間,並開啟「索引標籤著色」以區分專案。
- C# 進階設定:
- 開啟「顯示程序行分隔符號」:在方法與屬性間增加白線分隔。
- 啟用「淡出」設定:提醒多餘的 Using 與變數。
- 啟用「為重新指派的變數加上底線」:方便追蹤變數狀態。
NuGet 套件選擇與建議
結構化日誌 (Logging)
什麼情況下會遇到這個問題:傳統使用 NLog 紀錄純文字,導致無法有效搜尋與分析 Log 資料時。
- 建議做法:使用
Serilog.AspNetCore。 - 核心觀念:Serilog 紀錄的是「資料」(Data) 而非「字串」(Text)。例如
Log.Info("User {Id}", id),Serilog 會將Id視為可搜尋欄位。 - 視覺化建議:搭配
Serilog.Sinks.Seq,可將結構化 Log 視覺化,除錯效率遠勝文字檔。
依賴注入 (DI)
什麼情況下會遇到這個問題:在使用 .NET 原生 DI 容器時,發現缺乏組件掃描 (Assembly Scanning) 等進階功能。
- 建議做法:安裝
Scrutor。它能填補原生 DI 功能較陽春的缺口,實現簡潔的自動註冊。
反向代理 (Reverse Proxy)
什麼情況下會遇到這個問題:在微服務架構中需要選擇高效能的閘道器時。
- 建議做法:使用
YARP。相比Ocelot,YARP 與 .NET 高度整合且維護活躍,在核心轉發與負載平衡效能上表現更佳。
壓縮與檔案處理
什麼情況下會遇到這個問題:專案有資料加密或不落地的資安要求,且需要進行檔案壓縮時。
- 建議做法:避免呼叫外部
7z.exe,改用System.IO.Compression或DotNetZip。 - 原因分析:呼叫外部執行檔通常涉及將資料寫入暫存檔,若處理失敗未刪除,可能導致機密外洩。原生套件在記憶體中處理相對安全。
Excel 處理
- 授權提醒:
EPPlus5 以後改為非商業授權,商業環境建議改用NPOI。
異動歷程
- 2022-11-10 初版文件建立。
- 2025-04-06
- 增加「自動更新延伸模組」設定說明。
- 移除「Code Cleanup on Save」,Visual Studio 2022 已經內建很久,不用特別列出來。
- 更新部分套件的說明。
- 2025-12-31
- 移除過時以及需商用授權的套件。
- 更新 Visual Studio 設定建議,推薦改用 Cascadia 系列字型。
- 新增 YARP、Scrutor 與 MQTTnet 等套件。
